草庐IT

c++ - 包装第 3 方 DLL

全部标签

c - InitializeCriticalSectionAndSpinCount 最优 SpinCount(用户态)

我不太了解InitializeCriticalSectionAndSpinCount的文档:http://msdn.microsoft.com/en-us/library/windows/desktop/ms683476(v=vs.85).aspx它说“您可以通过选择较小的旋转计数来显着提高性能......”但是,由于等待微调器比等待对象更快,因此让SpinCount尽可能高不是很有意义吗?我错过了什么?谢谢。(我在多线程应用程序使用的CDLL中使用它)这是临界区的代码,被大量线程不断调用:intg_slots[256]={0};...slot=256;EnterCriticalSec

c - 在c和windows中获取进程组的用户时间

在Unix中我可以调用times()不仅可以获取当前进程的运行时间,还可以获取整个进程组的运行时间。在Windows中,我可以调用GetProcessTimes()获取当前进程的时间。但是,文档似乎表明这不会返回整个进程组的运行时间。那么有什么方法可以获取进程的运行时间,以及它在Windows中的所有子进程? 最佳答案 正如Harry所说,这不能做到,至少不能直接做到,因为Windows不像Unix那样跟踪进程之间的父/子关系。但是,您可以通过为进程创建共享内存来解决这个问题,并让它们都在运行时更新该位置。在这里您可以找到更多信息d

c - 如何在C中设置用户输入字符的时间限制?

首先,抱歉我的英语不好。我正在使用windows.h中包含的GetTickCount()函数和conio.h中包含的getch()。我真正想要的是给用户输入字符的时间限制。如果时间限制失效,程序继续执行,跳过等待用户输入字符。charch='A';DWORDstart_time,check_time;start_time=GetTickCount();check_time=start+500;//GetTickCountreturnstimeinmiliseconds,soIadd500towaitinputforhalfasecond.while(check_time>GetTick

c++ - 仅在需要时加载 DLL

这个问题在这里已经有了答案:DelayLoadingDLLs(3个答案)关闭8年前。如何只在需要时加载DLL?我有一个程序,我设置了一些依赖项(通过Properties>Linker>Input>AdditionalDependencias)。但是如果没有这个依赖项,可执行文件就无法运行。如何创建仅在需要时才需要此DLL的Windows应用程序?

c - 通过地址获取函数名

使用这段代码,我可以通过名称获取函数的地址:DWORDdwAddr=(DWORD)GetProcAddress(GetModuleHandleA("user32.dll"),"MessageBoxA");但是有可能做相反的过程吗?从函数地址找到函数名?假设MessageBoxA地址是0x1234abcd。我想要的是:char*func_name=this_is_what_i_want(0x1234abcd);printf("%s",func_name);//thiswillprint"MessageBoxA"操作系统:Windows 最佳答案

c - 'st_blksize' : is not a member of 'stat' on Windows

因为我想从Linux移植到Windows。我意识到Windows和LinuxAPI都有stat.h但有一些不同。问题是Windowsstat.h没有st_blksize变量,但Linux有。我真的不明白st_blksize也可以做什么。谁能帮我解决这个问题?如何在Windows上找到与st_blksize等效的内容? 最佳答案 对于Linux结构定义,请访问此处:http://pubs.opengroup.org/onlinepubs/7908799/xsh/sysstat.h.html主要摘录:st_size:文件大小(以字节为单

Windows 和 Linux 中二进制文件的 C 库校验和

我将CRC库用于校验和,对于文本文件,在Windows和Linux中结果相同,但对于二进制文件,结果不同。我在Windows中使用mingw编译我的c程序,校验和结果不同。有没有一种方法可以使用CRC库在Windows和Linux之间产生相同的校验和结果?添加代码:我将此代码用于校验和文件,是从一些网络谷歌搜索中找到的。(忘记保存链接)。crc32.c#include#include#include#include#defineCRC(crc,ch)(crc=(crc>>8)^crctabb[(crc^(ch))&0xff])staticconstuint32_tcrctabb[256

c - 我想打开新的 cmd 提示符并从 cmd 提示符插入参数

我尝试启动cmd以打开新的cmd提示符,但我无法在新的cmd中提供命令行参数..我试过以下system("startcmd")>>"system("C:\\Windows\\System32\\ipconfig");不工作system(startsystem("C:\\Windows\\System32\\ipconfig"));不工作 最佳答案 正如DipakDDesai所说,您可以简单地使用system("cmd/cstartC:\\Windows\\System32\\ipconfig");但是如果您在非控制台应用程序中执行此

c - C 中的 Visual Studio 错误,0xfefefefe 处的未处理异常

我正在学习如何在VisualStudio中编写C,这是我的代码,#includeintmain(){charme[20];printf("Whatisyourname?");scanf_s("%s",me);printf("darngladtomeetyou,%s!\n",me);return(0);}现在,在输入所有内容后,我会弹出一个错误消息“Project14.exe中0xFEFEFEFE处未处理的异常:0xC00001A5:已检测到无效的异常处理程序例程(参数:0x00000003)” 最佳答案 您使用的scanf_s()有

c# - 窃取系统 dll 代码行为并重新实现它是否违法?

我需要在slc.dll中使用SLGetWindowsInformation,但我宁愿实现我自己的版本,也不愿在应用程序启动时调用它200次并创建它需要的数据类型,所以反汇编库并编写我自己的代码是非法的吸取这个函数的行为p.s我正在使用C#,所以我不会内联程序集,我只是复制行为 最佳答案 isitillegaltodisassemblethelibraryandwritemyowncode这取决于你在哪里。在某些司法管辖区,逆向工程是一项protected消费者权利,因此任何在用户协议(protocol)中禁止逆向工程的尝试都是无效的